qiankun 的 js 沙箱机制主要是通过代理 window 对象来实现的，
它可以有效地隔离子应用的全局变量，防止子应用之间的全局变量污染。
然而，这种机制并不能解决所有的 js 污染问题。

例如，如果我们使用 onclick 或 addEventListener 
给 <body> 添加了一个点击事件，js 沙箱并不能消除它的影响。

在开发子应用时，我们需要避免直接操作全局对象，如 window 和 document。
如果必须要操作，我们应该在子应用卸载时，清理掉这些全局事件和全局变量，
以防止对其他子应用或主应用造成影响。

例如，如果我们在子应用中添加了一个全局的点击事件，
我们可以在子应用的 unmount 生命周期函数中移除这个事件。

<script>
  export async function mount(props) {
  // 添加全局点击事件
    window.addEventListener('click', handleClick);
  }

  export async function unmount() {
    // 移除全局点击事件
    window.removeEventListener('click', handleClick);
  }

  function handleClick() {
    // 处理点击事件
  }
</script>
这样，当子应用卸载时，全局的点击事件也会被移除，不会影响到其他的子应用。